package encryption

import (
	"crypto/rand"
	"crypto/rsa"
	"crypto/x509"
	"encoding/pem"
)

func Encrypt(data string) ([]byte, error) {
	byteData := []byte(data)
	block, _ := pem.Decode([]byte(publicKey))

	pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)
	if err != nil {
		return nil, err
	}

	pub := pubInterface.(*rsa.PublicKey)

	var sumEncryptByte []byte
	for len(byteData) > 245 {
		newByte := byteData[:245]
		bytes, err := rsa.EncryptPKCS1v15(rand.Reader, pub, newByte)
		if err != nil {
			return nil, err
		}
		sumEncryptByte = append(sumEncryptByte, bytes...)
		byteData = byteData[245:]
	}
	bytes, err := rsa.EncryptPKCS1v15(rand.Reader, pub, byteData)
	if err != nil {
		return nil, err
	}
	sumEncryptByte = append(sumEncryptByte, bytes...)

	return sumEncryptByte, nil
}
